package cn.tedu.csmall.product.webapi.mapper;

import cn.tedu.csmall.pojo.entity.Category;
import cn.tedu.csmall.pojo.vo.CategoryDetailsVO;
import cn.tedu.csmall.pojo.vo.CategoryNoEnableVO;
import cn.tedu.csmall.pojo.vo.CategorySimpleListItemVO;
import cn.tedu.csmall.pojo.vo.CategorySimpleVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理“类别”数据的持久层接口
 */
@Repository
public interface CategoryMapper {

    /**
     * 插入“类别”数据
     * @param category 类别
     * @return 受影响的行数
     */
    int insert(Category category);

    /**
    * 根据id修改数据isParent
    * @Param id  isParent--是否为父级类别，1=是，0=否
    * @return 受影响的行数
    * */
    int updateIsParentById(@Param("id") Long id, @Param("isParent") Integer isParent);

    /**
     * 根据id修改数据Enable
     * @Param id  Enable--是否禁用，1=开启，0=禁用
     * @return 受影响的行数
     * */
    int updateNoEnable(Long id);


    /**
     * 根据"类别"名称查询“类别”的简单信息
     * @param  name "类别"名称
     * @return “类别”的简单信息
     */
    CategorySimpleVO getByName(String name);

    /**
     * 根据"类别"名称查询“类别”的简单信息
     * @param  id "类别"id
     * @return “类别”的简单信息
     */
    CategorySimpleVO getById(Long id);

    /**
     * 根据"类别"名称查询“类别”的简单信息
     * @param  id "类别"id
     * @return “类别”的具体信息
     */
    CategoryDetailsVO getDetailsById(Long id);

    /**
    * 根据父级id查询所有子级信息
    * @param parentId 父级id
    * @return 返回子级信息列表
    * */
    List<CategorySimpleListItemVO> listByParentId(Long parentId);

    /**
     * 查询所有信息
     * @param
     * @return 返回信息列表
     * */
    List<CategoryDetailsVO> list();

    /**
     * 查询部分信息
     * @param  id 商品id
     * @return 返回部分信息
     * */
    CategoryNoEnableVO getEnableById(Long id);




}
